-
Notifications
You must be signed in to change notification settings - Fork 45
[CLNP-6719] feat: mark-as-unread #244
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #244 +/- ##
==========================================
- Coverage 11.49% 11.27% -0.23%
==========================================
Files 358 360 +2
Lines 8490 8676 +186
Branches 2395 2448 +53
==========================================
+ Hits 976 978 +2
- Misses 7439 7622 +183
- Partials 75 76 +1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
20a7656
to
22cd7b3
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements the new “mark as unread” feature for group channels while also updating various UI components and localization strings. In addition, the changes refine the Xcode project configuration and update dependencies for consistency.
- Introduces new UI elements: NewLine indicator and UnreadMessagesFloating.
- Adds localization string entries and type definitions for “mark as unread.”
- Updates project signing settings and dependency versions.
Reviewed Changes
Copilot reviewed 17 out of 21 changed files in this pull request and generated 1 comment.
Show a summary per file
File | Description |
---|---|
sample/ios/SendbirdUIKitSample.xcodeproj/project.pbxproj | Added empty input/output paths and modified code signing settings. |
packages/uikit-utils/package.json, packages/uikit-testing-tools/package.json, package.json, docs-validation/package.json | Updated @sendbird/chat dependency version. |
packages/uikit-react-native/src/localization/createBaseStringSet.ts | Updated message pluralization and added new localized strings for unread message indicators. |
packages/uikit-react-native/src/localization/StringSet.type.ts | Extended type definitions for the new mark-as-unread strings. |
packages/uikit-react-native/src/fragments/createGroupChannelFragment.tsx | Added logic and refs to manage new line visibility and marking messages as unread. |
packages/uikit-react-native/src/domain/groupChannel/* | Introduced handlers and refs for the mark-as-unread feature in message lists and press actions. |
packages/uikit-react-native/src/components/* | Added new components for rendering the new line and unread messages floating UI. |
packages/uikit-react-native-foundation/src/assets/icon/index.ts | Included an icon asset for “mark-as-unread.” |
Comments suppressed due to low confidence (3)
packages/uikit-react-native/src/fragments/createGroupChannelFragment.tsx:95
- [nitpick] Consider adding inline comments or JSDoc annotations to explain the purpose of 'isNewLineExistInChannelRef' and the related refs for new line tracking for clarity and maintainability.
const isNewLineExistInChannelRef = useRef(false);
packages/uikit-react-native/src/domain/groupChannel/component/GroupChannelMessageList.tsx:163
- Ensure that all edge cases and interactions related to the new mark-as-unread functionality are adequately covered by unit and integration tests.
const onPressMarkAsUnreadMessage = useCallback(
sample/ios/SendbirdUIKitSample.xcodeproj/project.pbxproj:583
- The change from a developer-specific code signing identity to a generic one should be verified against your team's signing strategy to avoid unintended signing issues.
CODE_SIGN_IDENTITY = "Apple Development";
@bang9 sample 배포시에 사용하는 promiseofcake/circleci-trigger-action@v1 이 보안 정책으로 막혀서 curl 이용해서 직접 circleci 호출하도록 변경하였습니다 |
f7d1357
to
b65b30b
Compare
...uikit-react-native/src/components/GroupChannelMessageRenderer/GroupChannelMessageNewLine.tsx
Outdated
Show resolved
Hide resolved
packages/uikit-react-native/src/components/GroupChannelMessageRenderer/index.tsx
Outdated
Show resolved
Hide resolved
packages/uikit-react-native/src/components/UnreadMessagesFloating.tsx
Outdated
Show resolved
Hide resolved
packages/uikit-react-native/src/components/UnreadMessagesFloating.tsx
Outdated
Show resolved
Hide resolved
28cd1c1
to
9650e6a
Compare
6adc82f
to
2df8c20
Compare
@bang9 qa 수정한 내용 머지하였습니다! |
const hasSeenNewLineRef = useRef(false); | ||
const isNewLineInViewportRef = useRef(false); | ||
const isNewLineExistInChannelRef = useRef(false); | ||
const scrolledAwayFromBottomRef = useRef(false); | ||
const [isVisibleUnreadMessageFloating, setIsVisibleUnreadMessageFloating] = useState(false); | ||
const viewableMessages = useRef<SendbirdMessage[]>(); | ||
const hasUserMarkedAsUnreadRef = useRef(false); | ||
const [unreadFirstMessage, setUnreadFirstMessage] = useState<SendbirdMessage | undefined>(undefined); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
new line 관련 핸들링 하는것들을 한번 훅으로 묶어주는건 어떨까요? 그렇게 되면 복잡한 internal state/refs 를 노출하지 않고 핸들러들만 내보내거나 재활용을 할 수 있을 것 같아서 좋을 것 같습니다.
비슷한거로는 useMentionTextInput
훅이 있습니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
scrolledAwayFromBottomRef 이런애들도 엮여있어서 좀 명확하게 분리가 안될 수도 있기는 하겠네요 ㅋㅋ
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
넵~ 안그래도 처음에 hook처럼 별도로 처리했는데, 관련 로직에 필요한 값들이 이것저것 엮이는게 많아서 그냥 합쳐서 처리하는걸로 다시 변경하였습니다. 의견 감사합니다!
packages/uikit-react-native/src/domain/groupChannel/component/GroupChannelMessageList.tsx
Outdated
Show resolved
Hide resolved
replyType: 'thread' as 'none' | 'thread' | 'quote_reply', | ||
threadReplySelectType: 'thread' as 'thread' | 'parent', | ||
replyType: 'quote_reply' as 'none' | 'thread' | 'quote_reply', | ||
threadReplySelectType: 'parent' as 'thread' | 'parent', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
요건 qa 때매 잠깐 바뀌는건가염?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
QA테스트용으로 변경했는데 다시 롤백 하겠습니다
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm! 고생하셨습니다.
External Contributions
This project is not yet set up to accept pull requests from external contributors.
If you have a pull request that you believe should be accepted, please contact
the Developer Relations team developer-advocates@sendbird.com with details
and we'll evaluate if we can setup a CLA to allow for the contribution.
For Internal Contributors
[CLNP-6719](https://sendbird.atlassian.net/browse/CLNP-6719)
Description Of Changes
NewLine UI 추가

UnreadMessageFloating 추가

BottomSheet 에 Mark as unread 메뉴 추가

Updated @sendbird/chat peerDependencies to v4.19.2
MarkAsUnread 스펙
https://sendbird.atlassian.net/wiki/spaces/SDK/pages/3191373873/MarkAsUnread
MarkAsUnread 기능 on/off 적용 되어있는 대시보드 접속 방법
https://sendbird.slack.com/archives/C08JD964GUS/p1750233883183979
Types Of Changes
What types of changes does your code introduce to this project?
Put an
x
in the boxes that apply_